package util;

import java.util.Random;

import org.jblas.DoubleMatrix;

/**
 * Generate a random matrix.
 * 
 * 生成一个随机数矩阵。
 * 
 * @author Tianyu Xu
 * 
 */
public class RandomMatrix {
	/**
	 * 使用的随机数生成器
	 */
	private static Random randGen = new Random();

	/**
	 * 获得指定大小的随机数矩阵
	 * 
	 * @param row
	 *            随机矩阵的行数
	 * @param column
	 *            随机矩阵的列数
	 * @return 指定大小的随机数矩阵
	 */
	public static DoubleMatrix rand(int row, int column) {
		DoubleMatrix m = new DoubleMatrix(row, column);

		for (int r = 0; r < row; r++) {
			for (int c = 0; c < column; c++) {
				m.put(r, c, (randGen.nextDouble() - 0.5) * 2); // 生成[-1,
																// 1]之间的随机数
				// m.put(r, c, randGen.nextDouble() / row);
			}
		}
		return m;
	}

	/**
	 * 获得指定大小的随机向量
	 * 
	 * @param row
	 *            随机向量行数
	 * @return 指定大小的随机向量（列向量）
	 */
	public static DoubleMatrix rand(int row) {
		return rand(row, 1);
	}

	/**
	 * 设置随机数种子
	 * 
	 * @param seed
	 *            随机数种子
	 */
	public static void setSeed(long seed) {
		randGen.setSeed(seed);
		System.out.printf("#### Using random seed: %d\n\n", seed);
	}
}
